150 FOR A=0 TO 3:CY=A*100+80:LINE(620,CY)-(639,CY+20),PSET,0,BF,7:LINE(620,CY+20)-(639,CY+40),PSET,0,BF,7:SYMBOL(621,CY+2),"↑",1,1,0:SYMBOL(621,CY+22),"↓",1,1,0:NEXT
170 FOR A=0 TO 3:CY=A*100+80:LINE(620,CY)-(639,CY+20),PSET,0,BF,7:LINE(620,CY+20)-(639,CY+40),PSET,0,BF,7:SYMBOL(621,CY+2),"↑",1,1,0:SYMBOL(621,CY+22),"↓",1,1,0:NEXT
200 GOSUB *禁:FOR A=0 TO 3:C=A+CC:CY=A*100:LINE(16,CY+50)-(619,CY+160),PSET,7,BF:PUT@A(16,80+CY)-(47,135+CY),PIC:FOR B=0 TO 4:LINE(16,90+B*8+CY)-(619,90+B*8+CY),PSET,0:NEXT
230 C1=A*100:FOR D=0 TO 13:CX=D*40+60:E=D+MX*10:IF OC(D,A)=0 OR (OK(E,C)<OK2(C) AND OT(E,C)<7 AND OL(E,C)<10) OR (OK(E,C)>OK2(C)+1 AND OL(E,C)<10) OR (OK2(C)>OK(E,C)+1 AND OT(E,C)=7 AND OL(E,C)<10) THEN 270
240 CCY=-(OK(E,C)-OK2(C))*28+(7-OT(E,C))*4
250 IF OL(E,C)<10 THEN PUT@A(CX,C1+CCY+63)-(CX+31,C1+110+CCY),PIC,MATTE,,,%15,448*OC(D,A)+2240:C2=OK2(C):IF OK(E,C)+1=C2 OR (OK(E,C)=C2 AND OT(E,C)=1) OR (OK(E,C)>C2 AND OT(E,C)>5) THEN C9=-(OK(E,C)<=C2)*48:LINE(CX,C1+82+C9)-(CX+19,C1+C9+82),PSET,0
260 IF OL(E,C)>9 THEN O=OL(E,C)-9:IF O>2 THEN PUT@A(CX,C1+79)-(CX+31,C1+127),PIC,,,,,448*(O-1) ELSE LINE(CX+10,C1+94+O*4)-(CX+18,C1+98+O*4),PSET,0,BF
270 NEXT
280 NEXT
290 LINE(50,465)-(300,480),PSET,%7,BF:IF ON2=1 THEN SYMBOL(150,465),KMID$(" 全付点二分 二分付点四分 四分付点八分 八分 16分32分",ON1*4-3,4)+"音譜",1,1,0
300 IF ON2=2 THEN SYMBOL(150,465),KMID$(" 全 二分 四分 八分十六分三二分",ON1*3-2,3)+"休符",1,1,0
350 IF CY>20 AND CX>16 AND CY<40 AND CX<592 THEN C=INT((CX-16)/64):ON C+1 GOSUB *F1,*F2,*F3,*F4,*F5,*F6,*F7,*F8,*F9
360 IF CX>60 AND CX<620 AND CY>60 AND CY<460 THEN 420
370 IF CX>620 AND CY>50 AND CY<440 THEN 390
380 GOTO 330
390 C1=INT((CY-50)/100):CY=INT((CY-50)/50)-C1*2:OK2(C1+MY)=OK2(C1+MY)-(CY=0)*2-1:IF OK2(C1+MY)<1 THEN OK2(C1+MY)=1 ELSE IF OK2(C1+MY)>7 THEN OK2(C1+MY)=7
430 IF OC(CX,CY)<>0 THEN LINE(CX*40+60,CY*100+60)-(CX*40+91,CY*100+139),PSET,%15,BF:FOR A=0 TO 4:LINE(CX*40+60,90+A*8+CY*100)-(CX*40+91,90+A*8+CY*100),PSET,0:NEXT:O1=OL(CX,CY)
440 WAIT 20:IF O1>9 THEN 550
450 CB=INT((MOUSE(1)-60-CY*100)/4):IF CB<0 THEN CB=0 ELSE IF CB>14 THEN CB=14
460 CCX=INT((CX*40+90-MOUSE(0))/30):O=CCX+O1:IF O<1 THEN O=1 ELSE IF O>9 THEN O=9
470 C=CB:PUT@A(CX*40+60,CY*100+35+C*4)-(CX*40+91,CY*100+82+C*4),PIC,XOR,,,,448*O+2240:IF C<2 OR C>12 THEN C9=-(C>12)*48:LINE(CX*40+60,CY*100+82+C9)-(CX*40+79,CY*100+C9+82),PSET,0
480 PUT@A(CX*40+60,CY*100+35+C*4)-(CX*40+91,CY*100+82+C*4),PIC,XOR,,,,448*O+2240:IF C<2 OR C>12 THEN LINE(CX*40+60,CY*100+82+C9)-(CX*40+79,CY*100+C9+82),PSET,%15
490 IF MOUSE(2,1)=-1 THEN GOSUB *解:GOTO *MAIN
500 IF MOUSE(2,0)=0 THEN 450
510 PUT@A(CX*40+60,CY*100+35+C*4)-(CX*40+91,CY*100+82+C*4),PIC,MATTE,,,%15,448*O+2240:OC(CX,CY)=O:IF C<2 OR C>12 THEN LINE(CX*40+60,CY*100+82+C9)-(CX*40+79,CY*100+C9+82),PSET,0
520 IF OE(C2)<MX*10+CX THEN OE(C2)=MX*10+CX
530 OT(CX+MX*10,C2)=7-(C MOD 7):OK(CX+MX*10,C2)=OK2(C2)-INT((C-7)/7):WAIT 20:OL(CX+MX*10,C2)=O:GOSUB *解:GOTO *MAIN
540 '休符配備
550 O1=O1-8
560 CCX=INT((CX*40+90-MOUSE(0))/30):O=CCX+O1:IF O<1 THEN O=1 ELSE IF O>6 THEN O=6
570 IF O>2 THEN PUT@A(CX*40+60,CY*100+79)-(CX*40+91,CY*100+126),PIC,XOR,,,,448*(O-1) ELSE LINE(CX*40+70,CY*100+94+O*4)-(CX*40+78,CY*100+98+O*4),XOR,7,BF
580 IF O>2 THEN PUT@A(CX*40+60,CY*100+79)-(CX*40+91,CY*100+126),PIC,XOR,,,,448*(O-1) ELSE LINE(CX*40+70,CY*100+94+O*4)-(CX*40+78,CY*100+98+O*4),XOR,7,BF
590 IF MOUSE(2,1)=-1 THEN GOSUB *解:GOTO *MAIN
600 IF MOUSE(2,0)=0 THEN 560
610 IF O>2 THEN PUT@A(CX*40+60,CY*100+79)-(CX*40+91,CY*100+126),PIC,,,,,448*(O-1) ELSE LINE(CX*40+70,CY*100+94+O*4)-(CX*40+78,CY*100+98+O*4),PSET,0,BF
750 MC(M)=M1:NEXT:PLAY PL$(0),PL$(1),PL$(2),PL$(3),PL$(4),PL$(5),PL$(6),PL$(7),PL$(8),PL$(9),PL$(10),PL$(11),PL$(12),PL$(13):IF MEC=14 THEN MEC=0:FOR M=0 TO 13:MC(M)=0:NEXT
1590 FOR A=0 TO 13:INPUT #1,OE(A),VO(A):FOR B=0 TO OE(A)-1:INPUT #1,OT(B,A),OK(B,A),OL(B,A):NEXT:NEXT:CLOSE #1:ON ERROR GOTO 0:FOR G1=0 TO 3:FOR G=0 TO 13:OC(G,G1)=OL(MX*10+G,MY+G1):NEXT:NEXT:音楽=1-音楽:GOSUB *F4:RETURN *表示
1600 *D3
1610 PRINT S$:PRINT D$:N$=INPUT$(1):RESUME 1500
1620 *D4
1630 IF ERR=63 THEN PRINT "指定のファイルが見つかりません":PRINT D$:N$=INPUT$(1):RESUME 1510
1640 IF ERR=50 OR ERR=75 THEN PRINT "ディスクが正しくセットされていません":PRINT D$:N$=INPUT$(1):RESUME 1510
2310 FOR A=OE(CY) TO CX STEP -1:OT(A+1,CY)=OT(A,CY):OK(A+1,CY)=OK(A,CY):OL(A+1,CY)=OL(A,CY):NEXT:OE(CY)=OE(CY)+1:OE(CY)=OE(CY)+1:GOSUB *解:PUT@A(100,40)-(300,60),SP:OL(CX,CY)=0
2320 FOR G1=0 TO 3:FOR G=0 TO 13:OC(G,G1)=OL(MX*10+G,MY+G1):NEXT:NEXT:RETURN *表示2
2330 FOR A=CX TO OE(CY):OT(A,CY)=OT(A+1,CY):OK(A,CY)=OK(A+1,CY):OL(A,CY)=OL(A+1,CY):NEXT:OE(CY)=OE(CY)-1:GOSUB *解:PUT@A(100,40)-(300,60),SP:FOR G1=0 TO 3:FOR G=0 TO 13:OC(G,G1)=OL(MX*10+G,MY+G1):NEXT:NEXT:RETURN *表示2
2340 *F4
2350 MEC=0:LINE(300,465)-(350,480),PSET,%7,BF:音楽=1-音楽:FOR G=0 TO 13:MC(G)=0:NEXT:M$="T120V10L4@":IF 音楽=1 THEN SYMBOL(300,465),"演奏中",1,1,0 ELSE RETURN
2360 PLAY M$+STR$(VO(0)),M$+STR$(VO(1)),M$+STR$(VO(2)),M$+STR$(VO(3)),M$+STR$(VO(4)),M$+STR$(VO(5)),M$+STR$(VO(6)),M$+STR$(VO(7)),M$+STR$(VO(8)),M$+STR$(VO(9)),M$+STR$(VO(10)),M$+STR$(VO(11)),M$+STR$(VO(12)):RETURN
2370 *F5
2380 GOSUB *禁:GET@A(272,40)-(356,120),SP:LINE(272,40)-(354,119),PSET,0,BF,7:FOR A=0 TO 3:SYMBOL(273,41+A*19),KMID$("音色変更タイトルCD演奏新規作成",A*4+1,4),1,1,0:NEXT:CCY=0